package com.expert.miniapp.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * RecommendationMapper - 推荐记录Mapper接口
 *
 * @author System
 * @since 2025-10-31
 */
@Mapper
public interface RecommendationMapper {

    /**
     * 插入推荐记录
     *
     * @param recommendation 推荐记录对象
     * @return 影响行数
     */
    int insert(Recommendation recommendation);

    /**
     * 根据ID查询推荐记录
     *
     * @param recommendationId 推荐ID
     * @return 推荐记录对象
     */
    Recommendation findById(@Param("recommendationId") String recommendationId);

    /**
     * 根据需求ID查询所有推荐记录
     *
     * @param demandId 需求ID
     * @return 推荐记录列表
     */
    List<Recommendation> findByDemandId(@Param("demandId") String demandId);

    /**
     * 根据需求ID删除所有推荐记录（级联删除会自动触发）
     *
     * @param demandId 需求ID
     * @return 删除的记录数
     */
    int deleteByDemandId(@Param("demandId") String demandId);

    /**
     * 根据需求ID统计推荐记录数量
     *
     * @param demandId 需求ID
     * @return 推荐记录数量
     */
    int countByDemandId(@Param("demandId") String demandId);

    /**
     * 根据需求ID查询最新的推荐记录
     *
     * @param demandId 需求ID
     * @return 最新的推荐记录
     */
    Recommendation findLatestByDemandId(@Param("demandId") String demandId);
}
